/**
 * 限制部分输入框的最大长度
 * 最大长度取值：1-默认为全局配置的最大长度 2-使用指定时绑定的最大长度数值
 */

import { SEARCH_MAX_LENGTH } from '@/common/constant/runtimeConfig'
import { debounce } from 'lodash'
export default {
  name: 'sliceString',
  bind (el: any, binding: any) {
    const newEl = el.tagName === 'INPUT' ? el : el.querySelector('input')
    function listenerFn () {
      if (newEl.value) {
        // 处理光标位置
        const now = newEl.selectionStart
        const max = binding && binding.value ? binding.value : SEARCH_MAX_LENGTH
        newEl.value = newEl.value.slice(0, max)
        // 在重新设置值之后不改变光标的位置-当输入字符长度达到最大限制后，每输入新的值，就从最后的字符进行删除
        newEl.setSelectionRange(now, now)
      }
    }

    newEl.removeEventListener('input', debounce(listenerFn, 50), true)
    newEl.addEventListener('input', debounce(listenerFn, 50), true)
  }
}
